home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 1
/
CU Amiga Magazine CD-ROM Special Edition (1995)(EMAP Images)(GB)[Issue 1995-11].iso
/
Aminet
/
comm
/
tcp
/
FtpDaemon.lha
/
amimsgd
/
amimsgd.c
< prev
Wrap
C/C++ Source or Header
|
1993-10-13
|
2KB
|
97 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/syslog.h>
#include <netinet/in.h>
#include <lineread.h>
//#include <intuition/intuition.h>
#include <proto/dos.h>
#include <proto/exec.h>
//#include <proto/intuition.h>
char user[15];
char host[20];
char msg[40];
char Title[80];
struct sockaddr_in his_addr;
long addrlen;
struct LineRead lr;
//struct IntuitionBase *IntuitionBase;
//struct EasyStruct es={
// sizeof(struct EasyStruct),
// 0,
// NULL,NULL,"Ok"
//};
extern long server_socket;
long gethostname(char *,long len);
void main(void)
{
fd_set readfds;
int length,i;
if(server_socket==-1) exit(20);
// IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0);
// if(!IntuitionBase) exit(20);
addrlen = sizeof (his_addr);
if(getpeername(0,(struct sockaddr *)&his_addr, &addrlen)<0) exit(20);
// drie regels ophalen van het formaat
// HOST hostname:20
// USER username:10
// MSG message:40
initLineRead(&lr,server_socket,RL_LFREQNUL,160);
FD_ZERO(&readfds);
i=0;
while((i&7)!=7)
{
FD_SET(server_socket,&readfds);
if(select(server_socket+1,&readfds,NULL,NULL,NULL)<0) exit(20);
if(FD_SET(server_socket,&readfds))
{
length=lineRead(&lr);
if(length==-1) exit(20);
if(lr.rl_Line)
{
if(!strncmp("HOST ",lr.rl_Line,5))
{
strncpy(host,lr.rl_Line+5,sizeof(host));
host[sizeof(host)-1]='\0';
i|=1;
}
if(!strncmp("USER ",lr.rl_Line,5))
{
strncpy(user,lr.rl_Line+5,sizeof(user));
user[sizeof(user)-1]='\0';
i|=2;
}
if(!strncmp("MSG ",lr.rl_Line,4))
{
strncpy(msg,lr.rl_Line+4,sizeof(msg));
msg[sizeof(msg)-1]='\0';
i|=4;
}
}
}
}
CloseSocket(server_socket);
// sprintf(Title,"Message from: %s",inet_ntoa(his_addr.sin_addr));
// es.es_Title=Title;
// es.es_TextFormat="%s: %s\n%s";
// EasyRequest(NULL,&es,0,host,user,msg);
syslog(LOG_INFO,"%s@%s(%s): %s",user,host,inet_ntoa(his_addr.sin_addr),msg);
}